package org.example.pdf2word;

import java.nio.charset.StandardCharsets;

public class BinaryToChinese {
    public static void main(String[] args) {
        // 示例二进制数据，表示的是"你好"的UTF-8编码
        String binaryData = "1110010010110011100110001110010010100001110010010110001110011000";

        // 将二进制数据转换为字节数组
        byte[] bytes = binaryToByteArray(binaryData);

        // 将字节数组转换为中文汉字
        String chineseText = new String(bytes, StandardCharsets.UTF_8);

        System.out.println("中文汉字是：" + chineseText);
    }

    // 将二进制数据转换为字节数组的方法
    public static byte[] binaryToByteArray(String binaryData) {
        // 计算字节数组的长度
        int byteLength = binaryData.length() / 8;
        byte[] bytes = new byte[byteLength];

        // 遍历每个字节
        for (int i = 0; i < byteLength; i++) {
            // 提取当前字节的二进制数据
            String byteBinary = binaryData.substring(i * 8, (i + 1) * 8);

            // 将二进制数据转换为整数
            int intValue = Integer.parseInt(byteBinary, 2);

            // 将整数转换为字节，并存储在字节数组中
            // 使用位运算将无符号的整数值转换为有符号的字节
            bytes[i] = (byte) (intValue & 0xFF);
        }

        return bytes;
    }
}
